"""
 udp服务器, 提供逻辑和数据处理
    1. 启动udp服务
    2. 开启字典查询服务
"""
from socket import *

class WordServer:
	"""
	服务器
	"""
	def __init__(self):
		self.__sockfd = socket(AF_INET, SOCK_DGRAM)
		self.__sockfd.bind(("127.0.0.1", 58693))
		self.__op = None

	def start(self):
		"""开启udp服务"""
		while True:
			print("等待链接...")
			data, addr = self.__sockfd.recvfrom(1024)   # 接收
			print(f"客户端: {data.decode()}, {addr}")
			re = self.dict_query(data.decode())         # 查询单词
			self.__sockfd.sendto(re.encode(), addr)     # 发送


	# 开启字典查询
	def dict_query(self, data):
		"""
		开启字典查询
		:param data: 查询的单词
		"""
		self.__op = open("dict.txt", 'r')
		self.__op.seek(0)  # 每次查找前先将位置定位到开头
		for line in self.__op:  # 每次获取一行
			w = line.split(' ')[0]  # 取出第一行的第一个单词

			if w > data:  # 如果遍历到的单词长度已经比word长,就停止循环,没必要继续找下去了
				self.__op.close()
				return f"没有找到该单词: {data}!"

			elif w == data:
				print(line)
				self.__op.close()
				return line
		self.__op.close()
		return f"没有找到: {data}单词!"


op = WordServer()
op.start()